package com.sky.context;

/**
 * BaseContext类用于管理当前线程的上下文ID。
 * 它利用ThreadLocal来存储和访问与当前线程相关的ID，确保ID的线程安全性。
 */
public class BaseContext {

    /**
     * 用于存储当前线程的上下文ID的ThreadLocal变量。
     * ThreadLocal提供了一个线程范围内的变量副本，确保了不同线程之间的隔离性。
     */
    public static ThreadLocal<Long> threadLocal = new ThreadLocal<>();

    /**
     * 设置当前线程的上下文ID。
     *
     * @param id 要设置的上下文ID。这个ID是线程安全的，只对当前线程可见。
     */
    public static void setCurrentId(Long id) {
        threadLocal.set(id);
    }

    /**
     * 获取当前线程的上下文ID。
     *
     * @return 当前线程的上下文ID。如果未设置ID，则返回null。
     */
    public static Long getCurrentId() {
        return threadLocal.get();
    }

    /**
     * 移除当前线程的上下文ID。
     * 这个方法可以在不再需要ID或者需要清理资源时调用。
     */
    public static void removeCurrentId() {
        threadLocal.remove();
    }

}

